package net.yondervision.hrfsp.sdk.esign.domain.request;

import cn.hutool.http.Method;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import net.yondervision.hrfsp.sdk.esign.domain.AbstractESignRequest;
import net.yondervision.hrfsp.sdk.esign.domain.ESignRequest;
import net.yondervision.hrfsp.sdk.esign.domain.request.body.IdentityAuthPubIndividualTelecom3FactorsParamBody;
import net.yondervision.hrfsp.sdk.esign.domain.request.path.IdentityAuthPubIndividualTelecom3FactorsParamPath;
import net.yondervision.hrfsp.sdk.esign.domain.response.IdentityAuthPubIndividualTelecom3FactorsResponse;

/**
 * @author Cash Zhang
 * @version v1.0
 * @since 2019/09/28 17:24
 */
@Data
@Builder
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class IdentityAuthPubIndividualTelecom3FactorsRequest extends AbstractESignRequest implements
    ESignRequest<IdentityAuthPubIndividualTelecom3FactorsResponse> {

  private IdentityAuthPubIndividualTelecom3FactorsParamPath identityAuthPubIndividualTelecom3FactorsParamPath;
  private IdentityAuthPubIndividualTelecom3FactorsParamBody identityAuthPubIndividualTelecom3FactorsParamBody;

  public IdentityAuthPubIndividualTelecom3FactorsRequest(
      IdentityAuthPubIndividualTelecom3FactorsParamPath identityAuthPubIndividualTelecom3FactorsParamPath,
      IdentityAuthPubIndividualTelecom3FactorsParamBody identityAuthPubIndividualTelecom3FactorsParamBody) {
    this.identityAuthPubIndividualTelecom3FactorsParamPath = identityAuthPubIndividualTelecom3FactorsParamPath;
    this.identityAuthPubIndividualTelecom3FactorsParamBody = identityAuthPubIndividualTelecom3FactorsParamBody;
    this.setParamPath(identityAuthPubIndividualTelecom3FactorsParamPath);
    this.setParamBody(identityAuthPubIndividualTelecom3FactorsParamBody);
  }

  @Override
  public String getUrl() {
    return "/identity/auth/pub/individual/{flowId}/telecom3Factors";
  }

  @Override
  public String getVersion() {
    return "v2";
  }

  @Override
  public Method getMethodType() {
    return Method.PUT;
  }

  @Override
  public Class<IdentityAuthPubIndividualTelecom3FactorsResponse> getResponseClass() {
    return IdentityAuthPubIndividualTelecom3FactorsResponse.class;
  }
}
